package com.langll.ai.minio.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.langll.ai.minio.model.AiDocumentFile;
import com.langll.ai.minio.model.UploadFileVo;
import org.springframework.web.multipart.MultipartFile;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author langll2
 * @since 2025-04-11
 */
public interface IAiDocumentFileService extends IService<AiDocumentFile> {
    /**
     * 保存文件到 MinIO对象服务并 在数据库表中保存记录
     * @param file
     */
    UploadFileVo saveFile(MultipartFile file);

    /**
     * 获取所有的 文件列表
     * @return
     */
    List<UploadFileVo> listFile();

    /**
     * delete 文件
     * @return 是否删除
     */
    Boolean deleteFile(String fileObjectName);

    /**
     * delete 文件
     * @return 是否删除
     */
    Boolean deleteFile(Serializable id);
    /**
     * 更新 文件
     * @return 是否删除
     */
    UploadFileVo updateFile(String fileObjectName, MultipartFile file);

    /**
     * 文档向量化，将文档进行向量化保存到 Milvus 数据库
     * @return 是否删除
     */
    UploadFileVo vectorFile(Serializable id);

    /**
     * 根据 fileObjectName 名称删除向量库中的内容
     * @param fileObjectName
     * @return
     */
    void vectorDeleteByFileName(String fileObjectName);

    /**
     * 下载文件，将UploadFileVo中min的 url开放时间更新到最新
     * @return 是否删除
     */
    UploadFileVo downloadFile(Serializable id);
}
